{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d31aac11",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('0.20.dev0', (2, 40, 1))"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%cd -q ..\n",
    "\n",
    "import graphviz\n",
    "\n",
    "graphviz.__version__, graphviz.version()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b8d54151",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'svg'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graphviz.set_jupyter_format('png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9e904725",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x7fb0306b1210>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dot = graphviz.Digraph(comment='The Round Table')\n",
    "\n",
    "dot.node('A', 'King Arthur')\n",
    "dot.node('B', 'Sir Bedevere the Wise')\n",
    "dot.node('L', 'Sir Lancelot the Brave')\n",
    "\n",
    "dot.edges(['AB', 'AL'])\n",
    "dot.edge('B', 'L', constraint='false')\n",
    "\n",
    "dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a0a07753",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"488pt\" height=\"116pt\"\n",
       " viewBox=\"0.00 0.00 488.38 116.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 112)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-112 484.3795,-112 484.3795,4 -4,4\"/>\n",
       "<!-- A -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>A</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"239.0398\" cy=\"-90\" rx=\"66.0889\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"239.0398\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">King Arthur</text>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"115.0398\" cy=\"-18\" rx=\"115.0796\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"115.0398\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Sir Bedevere the Wise</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;B -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>A&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M210.9023,-73.6621C194.0767,-63.8924 172.4517,-51.3359 154.0004,-40.6223\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"155.6378,-37.5258 145.2324,-35.5312 152.1228,-43.5793 155.6378,-37.5258\"/>\n",
       "</g>\n",
       "<!-- L -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>L</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"364.0398\" cy=\"-18\" rx=\"116.1796\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"364.0398\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Sir Lancelot the Brave</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;L -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>A&#45;&gt;L</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M267.4042,-73.6621C284.3654,-63.8924 306.1649,-51.3359 324.765,-40.6223\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"326.6853,-43.5553 333.6037,-35.5312 323.1914,-37.4896 326.6853,-43.5553\"/>\n",
       "</g>\n",
       "<!-- B&#45;&gt;L -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>B&#45;&gt;L</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M230.2996,-18C232.6341,-18 234.9687,-18 237.3033,-18\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"237.5395,-21.5001 247.5395,-18 237.5395,-14.5001 237.5395,-21.5001\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython import display\n",
    "\n",
    "display.display_svg(dot)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
